package com.xique.door.project.xyl.mapper;

import com.xique.door.bean.domain.User;
import com.xique.door.bean.domain.VerifyRecords;
import com.xique.door.project.xyl.bean.domain.UserStatistics;
import com.xique.door.project.xyl.bean.domain.XylAlarmRecord;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.Date;
import java.util.List;

/**
 * @author: caogq
 * @Date: 2021/12/27 17:01
 * @Description:
 */
@Repository
public interface XylAlarmRecordMapper {
    /**
     * 查询西洋楼报警记录
     *
     * @param id 西洋楼报警记录ID
     * @return 西洋楼报警记录
     */
    public XylAlarmRecord selectXylAlarmRecordById(Long id);

    /**
     * 查询西洋楼报警记录列表
     *
     * @param xylAlarmRecord 西洋楼报警记录
     * @return 西洋楼报警记录集合
     */
    public List<XylAlarmRecord> selectXylAlarmRecordList(XylAlarmRecord xylAlarmRecord);

    /**
     * 新增西洋楼报警记录
     *
     * @param xylAlarmRecord 西洋楼报警记录
     * @return 结果
     */
    public int insertXylAlarmRecord(XylAlarmRecord xylAlarmRecord);

    /**
     * 修改西洋楼报警记录
     *
     * @param xylAlarmRecord 西洋楼报警记录
     * @return 结果
     */
    public int updateXylAlarmRecord(XylAlarmRecord xylAlarmRecord);

    /**
     * 删除西洋楼报警记录
     *
     * @param id 西洋楼报警记录ID
     * @return 结果
     */
    public int deleteXylAlarmRecordById(Long id);

    /**
     * 批量删除西洋楼报警记录
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deleteXylAlarmRecordByIds(String[] ids);

    /**
     * @description: 查询七日未进出
     * @author caogq
     * @date 2021/12/28 10:26
     * @version 1.0
     */

    public List<VerifyRecords> selectLastDaysNoInoutRecords(@Param("parkId") Long parkId, @Param("date")Date date);

    /**
     * @description: 查询七日内访客数量过多
     * @author caogq
     * @date 2021/12/28 10:26
     * @version 1.0
     */
    public List<User> selectLastDaysVisitorAlarmRecords(@Param("parkId") Long parkId, @Param("date")Date date);

    /**
     * @description: 查询七日内访客访问次数过多
     * @author caogq
     * @date 2021/12/28 10:26
     * @version 1.0
     */
    public List<User> selectLastDaysVisitorInoutAlarmRecords(@Param("parkId") Long parkId, @Param("date")Date date);

    List<User> selectUserByIds(List<Long> userIds);

    /**
     * @description: 查询七日内所有人员进出次数
     * @author caogangquan
     * @date: 2021/12/29 下午10:43
     * @Param [parkId, date]
     */
    public List<UserStatistics> countLast7DaysInoutTime(@Param("parkId") Long parkId, @Param("date")Date date);

    /**
     * @description: 查询七日内所有人员的访客数量
     * @author caogangquan
     * @date: 2021/12/29 下午10:43
     * @Param [parkId, date]
     */
    public List<UserStatistics> countLast7DaysVisitorNums(@Param("parkId") Long parkId, @Param("date")Date date);

    /**
     * @description: 查询七日内所有人员的访客进出次数
     * @author caogangquan
     * @date: 2021/12/29 下午10:43
     * @Param [parkId, date]
     */
    public List<UserStatistics> countLast7DaysVisitorInoutTime(@Param("parkId") Long parkId, @Param("date")Date date);

   /**
    * @description: 批量新增
    * @author caogangquan
    * @date: 2021/12/29 下午10:43
    * @Param [xylAlarmRecords]
    */
    public int batchInsertAlarmRecords(List<XylAlarmRecord> xylAlarmRecords);


}
